// pages/cart/cart.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    cartItems: [],
    type: false,
    totalPrice: '¥0.00'
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 可以从options中获取商品ID，如果有的话
   this.car()
  },

  car(){
    wx.request({
      url: 'https://www.xuzhixiang.top:30001/api/cart/list',
      method: "post",
      header: { token: wx.getStorageSync('token') },
      data: {
        userid: wx.getStorageSync('userid'),
      },
      success: res => {
        console.log(res);
        this.setData({
          cartItems: res.data.data
        })
        //  let  newCartCount  = res.data.data.reduce((sum,v)=>sum+v.num,0)
        //   this.setData({ cartCount: newCartCount });
        //    wx.setStorageSync('cartCount', newCartCount);
      }
    })
   },



  /**
   * 删除购物车商品
   */
  carremove(cartid) {
    wx.request({
      url: 'https://www.xuzhixiang.top:30001/api/cart/remove',
      method: "post",
      header: { token: wx.getStorageSync('token') },
      data: {
        cartid: cartid
      },
      success: (res) => {
        console.log(res.data);
        if (res.data.code == 200) {
          wx.showToast({
            title: '删除成功',
            // title:message,
            icon: 'success'
          });
        } else {
          wx.showToast({
            title: '删除失败',
            icon: 'none'
          });
        }
      },
      fail: () => {
        wx.showToast({
          title: '网络异常',
          icon: 'none'
        });
        // 请求失败时确保cartItems是数组
        this.setData({ cartItems: [] });
      }
    })
  },

  carlist(cartid, num) {
    wx.request({
      url: 'https://www.xuzhixiang.top:30001/api/cart/updatenum',
      method: "post",
      header: { token: wx.getStorageSync('token') },
      data: {
        cartid: cartid,
        num: num,
      },
    })
  },
  carcheckone(cartid, flag) {
    wx.request({
      url: 'https://www.xuzhixiang.top:30001/api/cart/selectone',
      method: "post",
      header: { token: wx.getStorageSync('token') },
      data: {
        cartid: cartid,
        flag: flag,
      },
    })
  },
  carcheckall(cartid, type) {
    wx.request({
      url: 'https://www.xuzhixiang.top:30001/api/cart/selectall',
      method: "post",
      header: { token: wx.getStorageSync('token') },
      data: {
        cartid: cartid,
        type: type,
      },
    })
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 每次显示页面时刷新购物车列表并计算总价
    this.car();
    this.calculateTotalPrice();
  },

  /**
   * 切换全选状态
   */
  toggletype() {
    const type = !this.data.type;
    const cartItems = this.data.cartItems.map(item => ({
      ...item,
      flag: type
    }));
    this.setData({
      type,
      cartItems
    });
    this.carcheckall(cartItems.type);
    this.calculateTotalPrice();
  },

 

  /**
   * 切换单个商品的选择状态
   */
  toggleSelect(e) {
    const index = e.currentTarget.dataset.index;
    const cartItems = [...this.data.cartItems];
    const currentItem = cartItems[index];
    currentItem.flag = !currentItem.flag;

    // 检查是否全选
    const type = cartItems.every(item => item.flag);

    this.setData({
      cartItems,
      type
    });
    // 传递当前商品的选中状态作为flag参数
    this.carcheckone(currentItem.cartid, currentItem.flag)
    this.calculateTotalPrice();
  },

  /**
   * 减少商品数量
   */
  decreaseCount(e) {
    const index = e.currentTarget.dataset.index;
    const cartItems = [...this.data.cartItems];
    const currentItem = cartItems[index];
    if (currentItem.num > 1) {
      currentItem.num--;
      this.setData({ cartItems });
      this.calculateTotalPrice();
      this.carlist(currentItem.cartid, currentItem.num)
    } else if (currentItem.num === 1) {
      // 数量为1时，弹出确认删除对话框
      wx.showModal({
        title: '提示',
        content: '确定要删除该商品吗？',
        success: (res) => {
          if (res.confirm) {
            // 调用删除接口
            this.carremove(currentItem.cartid);
            // 从本地数组中删除
            cartItems.splice(index, 1);
            this.setData({ cartItems });
            this.calculateTotalPrice();
            // 删除商品后不需要调用carlist，因为商品已从列表中移除
          }
        }
      });
    }

  },

  /**
   * 增加商品数量
   */
  increaseCount(e) {
    const index = e.currentTarget.dataset.index;
    const cartItems = [...this.data.cartItems];
    const currentItem = cartItems[index];
    currentItem.num++;
    this.setData({ cartItems });
    this.calculateTotalPrice();
    this.carlist(currentItem.cartid, currentItem.num)
  },

  /**
   * 计算选中商品的总价
   */
  calculateTotalPrice() {
    let total = 0;
    // 检查cartItems是否存在且是数组
    if (Array.isArray(this.data.cartItems)) {
      this.data.cartItems.forEach(item => {
        if (item.flag) {
          // 确保originprice是字符串后再调用replace
          const priceStr = String(item.originprice);
          const price = parseFloat(priceStr.replace(/[^0-9.]/g, ''));
          total += price * item.num;
        }
      });
      }
      this.setData({ totalPrice: `¥${total.toFixed(2)}` });
    },

  /**
   * 去结算
   */
  settleAccount() {
    // 检查是否有选中的商品
    const flagItems = this.data.cartItems.filter(item => item.flag);
    if (flagItems.length === 0) {
      wx.showToast({
        title: '请选择要结算的商品',
        icon: 'none'
      });
      return;
    }

    // 跳转到结算页面
    wx.navigateTo({
      url: '/pages/order/order?totalPrice=' + this.data.totalPrice
    });
  }
})